package cn.demoncat.util.mybatis.plus.config;

import cn.demoncat.util.mybatis.plus.method.InsertIgnore;
import cn.demoncat.util.mybatis.plus.method.InsertInto;
import cn.demoncat.util.mybatis.plus.method.ReplaceInto;
import cn.demoncat.util.mybatis.plus.method.Truncate;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.injector.methods.Insert;
import com.baomidou.mybatisplus.core.metadata.TableInfo;

import java.util.List;

/**
 * SQL注入器
 *
 * @author 延晓磊
 * @since 2021年08月31日
 */
public class MybatisPlusSqlInjector extends DefaultSqlInjector {

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
        // 删除默认的Statement
        methodList.removeIf(e -> e instanceof Insert);
        // 添加自定义Statement
        methodList.add(new InsertInto());
        methodList.add(new InsertIgnore());
        methodList.add(new ReplaceInto());
        methodList.add(new Truncate());
        return methodList;
    }
}
